﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ServiceModel.Channels;
using System.ComponentModel;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.EstabelecimentoWS;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.AvaliacaoWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.ClienteWs;
using PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.RelatorioWs;

namespace PUBCLUB_2014_VISUAL_STUDIO_PRO_2010.GUI
{
    public partial class HomeEstabelecimento : System.Web.UI.Page
    {

        ObjetoEstabelecimento estabelecimento;

        PubClub_Estabelecimento_WS webServiceEstabelecimento = new PubClub_Estabelecimento_WS();
        PubClub_Cliente_WS webServiceCliente = new PubClub_Cliente_WS();
        PubClub_Avaliacao_WS webServiceAvaliacao = new PubClub_Avaliacao_WS();
        PubClub_Relatorio_WS webServiceRelatorio = new PubClub_Relatorio_WS(); 

        ObjetoCliente cliente;

        ObjetoAvaliacao[] listaAvaliacaoClientes;
        RankingEstabelecimento[] listaMelhoresEstabelecimentos;
        RankingCliente[] listaMelhoresClientes;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (Session["Estabelecimento"] == null)
            {
                Response.Redirect("Login.aspx?Logout=2");
            }
            else
            {
                estabelecimento = webServiceEstabelecimento.GetEstabelecimento(Convert.ToInt32(Session["Estabelecimento"]));
            }
            #region ver comentarios dos clientes

            listaAvaliacaoClientes = webServiceAvaliacao.GetAvaliacoesByEstabelecimentoId(estabelecimento.EstabelecimentoId);

            TableHeaderRow linhaCabecalhoComentariosClientes = new TableHeaderRow();

            Label LabelCabecalhoComentariosClientes = new Label();
            TableHeaderCell celulaCabecalhoComentatiosCliente = new TableHeaderCell();

            LabelCabecalhoComentariosClientes.Text = "Comentários dos clientes"+"("+listaAvaliacaoClientes.Count()+")";
            celulaCabecalhoComentatiosCliente.Controls.Add(LabelCabecalhoComentariosClientes);
            linhaCabecalhoComentariosClientes.Cells.Add(celulaCabecalhoComentatiosCliente);
            tabelaComentariosDosClientes.Rows.Add(linhaCabecalhoComentariosClientes);

            for (int i = 0; i <= 4; i++)
            {
                TableRow linhaComentariosClientes = new TableRow();
                TableCell celulaComentariosClientes = new TableCell();
                Label labelComentariosClientes = new Label();

                if (i > listaAvaliacaoClientes.Count() - 1)
                {
                    break;
                }
                else
                {
                    if (i % 2 != 0)
                    {
                        linhaComentariosClientes.CssClass = "odd";
                    }

                    cliente = webServiceCliente.GetCliente(listaAvaliacaoClientes[i].ClienteId);
                    labelComentariosClientes.Text = "\"" + listaAvaliacaoClientes[i].Comentario + "\"" + "-" + cliente.Nome;
                    celulaComentariosClientes.Controls.Add(labelComentariosClientes);
                    linhaComentariosClientes.Cells.Add(celulaComentariosClientes);
                    tabelaComentariosDosClientes.Rows.Add(linhaComentariosClientes);
                }

            }

            TableRow linhaVerTodosComentarios = new TableRow();
            TableCell celulaVerTodosComentarios = new TableCell();
            HyperLink hyperLinkVerTodosComentarios = new HyperLink();

            hyperLinkVerTodosComentarios.Text = "Ver todos os comentarios.";
            hyperLinkVerTodosComentarios.NavigateUrl = "~/GUI/EstabelecimentoVerAvaliacoesClientes.aspx";
            celulaVerTodosComentarios.Controls.Add(hyperLinkVerTodosComentarios);
            linhaVerTodosComentarios.Cells.Add(celulaVerTodosComentarios);
            tabelaComentariosDosClientes.Rows.Add(linhaVerTodosComentarios);
            #endregion

            #region ver ranking dos estabelecimentos

            TableHeaderRow linhaCabecalhoRankingEstabelecimento = new TableHeaderRow();
            TableHeaderCell celulaCabecalhoRankingEstabelecimento = new TableHeaderCell();
            Label labelCabecalhoRankingEstabelecimento = new Label();

            labelCabecalhoRankingEstabelecimento.Text = "Top 3 melhores estabelecimentos";
            celulaCabecalhoRankingEstabelecimento.Controls.Add(labelCabecalhoRankingEstabelecimento);
            linhaCabecalhoRankingEstabelecimento.Cells.Add(celulaCabecalhoRankingEstabelecimento);

            TabelaMelhoresEstabelecimentos.Rows.Add(linhaCabecalhoRankingEstabelecimento);

            listaMelhoresEstabelecimentos = webServiceRelatorio.MelhoresEstabelecimentos();

            for (int i = 0; i <= 2; i++)
            {
                TableRow linhaNomesEstabelecimentos = new TableRow();
                TableCell celulaNomesEstabelecimentos = new TableCell();
                Label labelMelhoresEstabelecimentos = new Label();

                if (i > listaMelhoresEstabelecimentos.Count() - 1)
                {
                    break;
                }
                else
                {
                    if (i % 2 != 0)
                    {
                        linhaNomesEstabelecimentos.CssClass = "odd";
                    }

                    labelMelhoresEstabelecimentos.Text = Convert.ToInt32(i + 1).ToString() + "º - " + listaMelhoresEstabelecimentos[i].Nome;
                    celulaNomesEstabelecimentos.Controls.Add(labelMelhoresEstabelecimentos);
                    linhaNomesEstabelecimentos.Cells.Add(celulaNomesEstabelecimentos);
                    TabelaMelhoresEstabelecimentos.Rows.Add(linhaNomesEstabelecimentos);
                }

            }

            TableRow linhaVerRankingEstabelecimentoCompleto = new TableRow();
            TableCell celulaVerRankingEstabelecimentoCompleto = new TableCell();
            HyperLink hyperLinkVerEstabelecimentoCompleto = new HyperLink();


            hyperLinkVerEstabelecimentoCompleto.Text = "Ver ranking completo";
            hyperLinkVerEstabelecimentoCompleto.NavigateUrl = "~/GUI/EstabelecimentoVerRankingEstabelecimentos.aspx";
            celulaVerRankingEstabelecimentoCompleto.Controls.Add(hyperLinkVerEstabelecimentoCompleto);
            linhaVerRankingEstabelecimentoCompleto.Cells.Add(celulaVerRankingEstabelecimentoCompleto);
            TabelaMelhoresEstabelecimentos.Rows.Add(linhaVerRankingEstabelecimentoCompleto);


            #endregion

            #region ver ranking dos clientes
            TableHeaderRow linhaCabecalhoRankingClientes = new TableHeaderRow();
            TableHeaderCell celulaCabecalhoRankingClientes = new TableHeaderCell();
            Label labelCabecalhoRankingClientes = new Label();

            labelCabecalhoRankingClientes.Text = "Top 3 melhores clientes";
            celulaCabecalhoRankingClientes.Controls.Add(labelCabecalhoRankingClientes);
            linhaCabecalhoRankingClientes.Cells.Add(celulaCabecalhoRankingClientes);

            tabelaRankingClientes.Rows.Add(linhaCabecalhoRankingClientes);

            listaMelhoresClientes = webServiceRelatorio.MelhoresClientes("Doses");

            for (int i = 0; i <= 2; i++)
            {
                TableRow linhaNomesClientes = new TableRow();
                TableCell celulaNomesClientes = new TableCell();
                Label labelMelhoresClientes = new Label();

                if (i > listaMelhoresClientes.Count() - 1)
                {
                    break;
                }
                else
                {
                    if (i % 2 != 0)
                    {
                        linhaNomesClientes.CssClass = "odd";
                    }

                    labelMelhoresClientes.Text = Convert.ToInt32(i + 1).ToString() + "º - " + listaMelhoresClientes[i].Nome;
                    celulaNomesClientes.Controls.Add(labelMelhoresClientes);
                    linhaNomesClientes.Cells.Add(celulaNomesClientes);
                    tabelaRankingClientes.Rows.Add(linhaNomesClientes);
                }

            }

            TableRow linhaVerRankingCompleto = new TableRow();
            TableCell celulaVerRankingCompleto = new TableCell();
            HyperLink hyperLinkVerRankingCompleto = new HyperLink();


            hyperLinkVerRankingCompleto.Text = "Ver ranking completo";
            hyperLinkVerRankingCompleto.NavigateUrl = "~/GUI/EstabelecimentoVerRankingClientes.aspx";
            celulaVerRankingCompleto.Controls.Add(hyperLinkVerRankingCompleto);
            linhaVerRankingCompleto.Cells.Add(celulaVerRankingCompleto);
            tabelaRankingClientes.Rows.Add(linhaVerRankingCompleto);
            #endregion


        }
    }
}